package com.echo.im.repository.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.echo.im.repository.dao.entity.GroupMessage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 群消息Mapper接口
 *
 * 这是处理群消息数据操作的接口。
 * 提供了根据群ID和其他参数动态查询群消息的功能。
 *
 * @author echo
 * @date 2024-08-17
 */
public interface GroupMessageMapper extends BaseMapper<GroupMessage> {

    /**
     * 动态查询：根据群ID和最后ack消息ID查询消息列表，并限制返回结果数量
     *
     * @param groupId 群ID
     * @param lastAckMessageId 最后ack的消息ID（用于分页）
     * @param size 限制返回结果的数量
     * @return 群消息列表
     */
    List<GroupMessage> selectListByGroupIdAndLastAckMessageIdLimitBySize(@Param("groupId") Long groupId,
                                                                         @Param("lastAckMessageId") Long lastAckMessageId,
                                                                         @Param("size") Long size);

    /**
     * 动态查询：根据群ID和消息ID查询消息列表，并限制返回结果数量
     *
     * @param groupId 群ID
     * @param lastMsgId 最后消息的ID（用于分页）
     * @param size 限制返回结果的数量
     * @return 群消息列表
     */
    List<GroupMessage> selectListByGroupIdAndIdLimitBySize(@Param("groupId") Long groupId,
                                                           @Param("lastMsgId") Long lastMsgId,
                                                           @Param("size") Long size);
}
